qx.Class.define("secretcuz.ui.widget.CkEditor", {
	extend : qx.ui.form.TextArea,
	
	properties : {
		appearance : {
			refine : true,
			init : "widget"
		}
	},

	construct : function(value) {
		this.base(arguments, value);
		this.addListenerOnce("appear", function(e) {
			var el = this.getContentElement().getDomElement();
			var hint = this.getSizeHint();
			this.__ckEditor = CKEDITOR.replace(el, {
//				height : hint.height - 2,
//				width : hint.width - 2,
				resize_enabled : true
//				toolbar : [ // everything but Maximize
//						[ 'Source', '-', 'Save', 'NewPage', 'Preview',
//								'-', 'Templates' ],
//						[ 'Cut', 'Copy', 'Paste', 'PasteText',
//								'PasteFromWord', '-', 'Print',
//								'SpellChecker', 'Scayt' ],
//						[ 'Undo', 'Redo', '-', 'Find', 'Replace', '-',
//								'SelectAll', 'RemoveFormat' ],
//						[ 'Form', 'Checkbox', 'Radio', 'TextField',
//								'Textarea', 'Select', 'Button',
//								'ImageButton', 'HiddenField' ],
//						'/',
//						[ 'Bold', 'Italic', 'Underline', 'Strike', '-',
//								'Subscript', 'Superscript' ],
//						[ 'NumberedList', 'BulletedList', '-',
//								'Outdent', 'Indent', 'Blockquote',
//								'CreateDiv' ],
//						[ 'JustifyLeft', 'JustifyCenter',
//								'JustifyRight', 'JustifyBlock' ],
//						[ 'BidiLtr', 'BidiRtl' ],
//						[ 'Link', 'Unlink', 'Anchor' ],
//						[ 'Image', 'Flash', 'Table', 'HorizontalRule',
//								'Smiley', 'SpecialChar', 'PageBreak',
//								'Iframe' ], '/',
//						[ 'Styles', 'Format', 'Font', 'FontSize' ],
//						[ 'TextColor', 'BGColor' ],
//						[ 'ShowBlocks', '-', 'About' ] ]
			});
		}, this);
	},

	members : {
		__ckEditor : null,
		
		linkTo : function(button) {
			button.addListener("execute", function() {
				var old = this.getValue();
				this.__ckEditor.updateElement();
				var val = this.getValue();
				if (old != val) {
					this.fireDataEvent("changeValue", val, old);
				}
			}, this);
		},
		
		setData : function(value) {
			if (this.__ckEditor != null) {
				if (value != null) {
					this.__ckEditor.setData(value);
					this.__ckEditor.updateElement();
				}
			}
		}
	}
});